package com.swh.cloud.biz.base.dao;

import java.util.List;

/**
 * 所有dao的接口基类
 * @author sangwenhao-桑文豪
 * @date 2016年2月16日 下午6:23:27
 * @param <T>
 */
public interface IBaseDao<T> {
	
	/**
	 * 保存实体
	 * @param entity
	 * @return
	 */
	public boolean save(T entity);
	
	/**
	 * 删除实体
	 * @param id
	 * @see public boolean delete(String uuid)
	 * @return
	 */
	@Deprecated
	public boolean delete(Long id);
	
	/**
	 * 根据uuid 删除 对象
	 * @param uuid 
	 * @return
	 * @author sangwenhao-桑文豪
	 * @date 2016年3月22日 下午10:00:54
	 */
	public boolean delete(String uuid);
	/**
	 * 删除实体
	 * @param entity
	 * @return
	 */
	public boolean delete(T entity);
	
	/**
	 * 更新实体
	 * @param entity
	 * @return
	 */
	public int update(T entity);
	/**
	 * 按id查询
	 * @param id
	 * @see public T getByUUId(String uuid)
	 * @return
	 */
	@Deprecated
	public T getById(Long id);
	
	/**
	 * 根据uuid查询对象
	 * @param uuid
	 * @return
	 * @author sangwenhao-桑文豪
	 * @date 2014年3月22日 下午10:02:35
	 */
	public T getByUUId(String uuid);
	
	/**
	 * 按id查询
	 * @param ids
	 * @return
	 */
	public List<T> getByIds(List<String> ids);
	
	/**
	 * 根据实体参数查询实体详细内容
	 * @param entity
	 * @return T entity内容
	 * @author sangwenhao-桑文豪
	 * @date 2014年2月16日 下午6:34:19
	 */
	public T queryByEntity(T entity) ;
	
	/**
	 * 根据实体参数查询符合条件的实体集合
	 * @param entity
	 * @return 实体集合
	 * @author sangwenhao-桑文豪
	 * @date 2016年2月16日 下午6:42:11
	 */
	public List<T> queryInfosByEntity(T entity) ;
	
	/**
	 * 根据实体参数查询符合条件的实体集合(分页查询)
	 * @param entity
	 * @param start 起始页
	 * @param limit 每页的条数
	 * @return 实体集合
	 * @author sangwenhao-桑文豪
	 * @date 2016年2月16日 下午6:42:11
	 */
	public List<T> queryInfosByEntity(T entity, int start, int limit) ;
	
	/**
	 * 泛型 根据传过来的实体 查询对应的 信息
	 * @param entity 
	 * @return
	 * @author sangwenhao
	 * @date 2016年5月10日
	 */
	public <T> T getT(T entity);
	

}
